home *** CD-ROM | disk | FTP | other *** search
/ Die Ultimative Software-P…i Collection 1996 & 1997 / Die Ultimative Software-Pakete CD-ROM fur Atari Collection 1996 & 1997.iso / i / internet / software / tuwtcpsr / queue.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-03-19  |  1.2 KB  |  51 lines

  1. /* queue definitions */
  2.  
  3. #ifndef _INET_QUEUE
  4. #define _INET_QUEUE
  5.  
  6. #ifndef _INET_PKT
  7. #include "pktdrv.h"
  8. #endif
  9.  
  10. typedef struct
  11. {
  12.     int        q_get;
  13.     int        q_put;
  14.     int        q_nbuf;
  15.     struct    q_table
  16.     {
  17.         int        q_occupied;
  18.         PACKET    *q_pkt;
  19.     }q_tab[1];
  20. } PKTQUEUE;
  21.  
  22.  
  23. typedef struct
  24. {
  25.     long    wr;
  26.     long     rd;
  27.     long    size;
  28.     unsigned char    *data;
  29.     int        flags;
  30. } TCP_QUEUE;
  31.  
  32. #define q_used(q) (((q)->rd <= (q)->wr) ? ((q)->wr - (q)->rd) : ((q)->size - (q)->rd + (q)->wr))
  33. #define q_free(q) (((q)->rd <= (q)->wr) ? ((q)->size - (q)->wr + (q)->rd - 1) : ((q)->rd - (q)->wr - 1))
  34.  
  35. /* TCP queues */
  36. TCP_QUEUE *q_init(TCP_QUEUE *,char *,long);
  37. int q_del(TCP_QUEUE *);
  38. long q_get(TCP_QUEUE *,unsigned char *,long,long);
  39. long q_put(TCP_QUEUE *,unsigned char *,long);
  40. long q_rem(TCP_QUEUE *,long);
  41. long q_look(TCP_QUEUE *,int);
  42.  
  43. /* IP queues */
  44. PACKET *ip_q_getpkt(PKTQUEUE *);            /* dequeue packet */
  45. int ip_q_putpkt(PKTQUEUE *,PACKET *);        /* enqueue packet */
  46. PACKET *ip_aq_getpkt(PKTQUEUE *);            /* dequeue packet atomic */
  47. int ip_aq_putpkt(PKTQUEUE *,PACKET *);        /* enqueue packet atomic */
  48. PKTQUEUE *ip_q_create(int,int);                /* create queue */
  49. int    ip_q_delete(PKTQUEUE *);                /* delete queue */
  50.  
  51. #endif